replicas-cli 0.2.728 → 0.2.729
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +51 -41
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -22513,10 +22513,15 @@ var TEAM_PLAN = PLANS.team;
|
|
|
22513
22513
|
var ENTERPRISE_PLAN = PLANS.enterprise;
|
|
22514
22514
|
|
|
22515
22515
|
// ../shared/src/analytics/types.ts
|
|
22516
|
+
var credentialAccountSchema = external_exports.object({
|
|
22517
|
+
ownerName: external_exports.string().optional(),
|
|
22518
|
+
email: external_exports.string().optional()
|
|
22519
|
+
});
|
|
22516
22520
|
var agentCredentialSnapshotSchema = external_exports.object({
|
|
22517
22521
|
method: external_exports.enum(CREDENTIAL_METHOD),
|
|
22518
22522
|
scope: external_exports.enum(CREDENTIAL_SCOPE),
|
|
22519
|
-
revision: external_exports.string().optional()
|
|
22523
|
+
revision: external_exports.string().optional(),
|
|
22524
|
+
account: credentialAccountSchema.optional()
|
|
22520
22525
|
});
|
|
22521
22526
|
function isAuthMethod(value) {
|
|
22522
22527
|
return typeof value === "string" && Object.values(CREDENTIAL_METHOD).some((method) => method === value);
|
|
@@ -22528,7 +22533,7 @@ function isCredentialScope(value) {
|
|
|
22528
22533
|
// ../shared/src/workspace-credentials.ts
|
|
22529
22534
|
var WORKSPACE_CREDENTIAL_PROVIDERS = ["claude", "codex"];
|
|
22530
22535
|
var workspaceCredentialProviderSchema = external_exports.enum(WORKSPACE_CREDENTIAL_PROVIDERS);
|
|
22531
|
-
var workspaceCredentialSelectionSchema = agentCredentialSnapshotSchema.omit({ revision: true });
|
|
22536
|
+
var workspaceCredentialSelectionSchema = agentCredentialSnapshotSchema.omit({ revision: true, account: true });
|
|
22532
22537
|
var createWorkspaceCredentialSchema = workspaceCredentialSelectionSchema.extend({
|
|
22533
22538
|
provider: external_exports.enum(VALID_CODING_AGENT_PROVIDERS)
|
|
22534
22539
|
}).refine(({ provider, method }) => agentCredentialMethods(provider).includes(method), {
|
|
@@ -22916,6 +22921,8 @@ var CHAT_INTERRUPTED_EVENT_TYPE = "replicas-interrupted";
|
|
|
22916
22921
|
var AUTH_FALLBACK_EVENT_TYPE = "auth-fallback";
|
|
22917
22922
|
function coerceAuthFallbackPayload(payload) {
|
|
22918
22923
|
const { provider, reason, exhaustedMethod, exhaustedScope, candidateMethod, candidateScope, status, detail } = payload;
|
|
22924
|
+
const exhaustedAccount = credentialAccountSchema.safeParse(payload.exhaustedAccount).data;
|
|
22925
|
+
const candidateAccount = credentialAccountSchema.safeParse(payload.candidateAccount).data;
|
|
22919
22926
|
if (typeof provider !== "string" || !isValidCodingAgentProvider(provider) || reason !== "rate_limit" && reason !== "out_of_credits" || !isAuthMethod(exhaustedMethod) || !isAuthMethod(candidateMethod) || !isCredentialScope(candidateScope) || status !== "switched" && status !== "failed") {
|
|
22920
22927
|
return null;
|
|
22921
22928
|
}
|
|
@@ -22924,8 +22931,10 @@ function coerceAuthFallbackPayload(payload) {
|
|
|
22924
22931
|
reason,
|
|
22925
22932
|
exhaustedMethod,
|
|
22926
22933
|
...isCredentialScope(exhaustedScope) ? { exhaustedScope } : {},
|
|
22934
|
+
...exhaustedAccount ? { exhaustedAccount } : {},
|
|
22927
22935
|
candidateMethod,
|
|
22928
22936
|
candidateScope,
|
|
22937
|
+
...candidateAccount ? { candidateAccount } : {},
|
|
22929
22938
|
status,
|
|
22930
22939
|
...typeof detail === "string" && detail ? { detail } : {}
|
|
22931
22940
|
};
|
|
@@ -23736,7 +23745,7 @@ gh pr review 123 --request-changes --body "Changes needed"
|
|
|
23736
23745
|
|
|
23737
23746
|
## Media in GitHub workflows
|
|
23738
23747
|
|
|
23739
|
-
Media delivery is owned by \`references/MEDIA.md\`. Read its GitHub section before adding screenshots, recordings, diagrams, or HTML reports to a pull request, issue, review comment, or commit; it covers public
|
|
23748
|
+
Media delivery is owned by \`references/MEDIA.md\`. Read its GitHub section before adding screenshots, recordings, diagrams, or HTML reports to a pull request, issue, review comment, or commit; it covers the public links every image upload prints, recording previews, organization-only HTML links, and the required **View in Replicas** link.
|
|
23740
23749
|
`;
|
|
23741
23750
|
var GITHUB_ABILITY = {
|
|
23742
23751
|
label: "GitHub",
|
|
@@ -23947,11 +23956,11 @@ If none of these apply, don't upload.
|
|
|
23947
23956
|
|
|
23948
23957
|
\`replicas media upload\` is always the first delivery action. When the current task has an external destination, every other delivery step follows only after that command succeeds. For every file:
|
|
23949
23958
|
|
|
23950
|
-
1. First, run \`replicas media upload\` with the original file. Do not begin any destination upload until the command succeeds. This creates the canonical dashboard copy and prints
|
|
23959
|
+
1. First, run \`replicas media upload\` with the original file. Do not begin any destination upload until the command succeeds. This creates the canonical dashboard copy and prints an embed plus a per-file dashboard link. Every image gets a public link, so its printed embed works in chat and on GitHub.
|
|
23951
23960
|
2. Include the printed embed line in the Replicas chat reply, followed by **View in Canvas** using the matching per-file dashboard URL. HTML uses its printed page link instead of an image embed.
|
|
23952
|
-
3. Identify every destination in the task and use its inline representation from the table below. Slack, Linear, and GitLab require an upload of the same original bytes; GitHub uses the public
|
|
23961
|
+
3. Identify every destination in the task and use its inline representation from the table below. Slack, Linear, and GitLab require an upload of the same original bytes; GitHub uses the image's printed public embed.
|
|
23953
23962
|
4. Put the **View in Replicas** dashboard link next to the destination embed as a secondary link.
|
|
23954
|
-
5. Check each destination response. If its upload or
|
|
23963
|
+
5. Check each destination response. If its upload or public link fails, say so explicitly and keep the dashboard link; never claim that a dashboard link is an inline embed.
|
|
23955
23964
|
|
|
23956
23965
|
| Destination | Required file delivery | Inline result |
|
|
23957
23966
|
|---|---|---|
|
|
@@ -23959,7 +23968,7 @@ If none of these apply, don't upload.
|
|
|
23959
23968
|
| Slack | \`files.getUploadURLExternal\` \u2192 raw-byte POST \u2192 \`files.completeUploadExternal\` | Uploaded file in the channel or thread |
|
|
23960
23969
|
| Linear | \`fileUpload\` mutation \u2192 presigned upload \u2192 issue/comment mutation | Returned \`assetUrl\` in Markdown |
|
|
23961
23970
|
| GitLab | Project \`/uploads\` endpoint with the original bytes | Returned GitLab Markdown |
|
|
23962
|
-
| GitHub |
|
|
23971
|
+
| GitHub | Printed public embed for an image or recording poster | Printed embed, linked to the recording when needed |
|
|
23963
23972
|
|
|
23964
23973
|
The dashboard link is the subtitle and jump-back path. It is never a substitute for the destination embed.
|
|
23965
23974
|
|
|
@@ -23989,8 +23998,8 @@ Names are normalized to hyphen-case (spaces become hyphens, e.g. \`Login page\`
|
|
|
23989
23998
|
|
|
23990
23999
|
For each media file, the CLI prints an embed line and a dashboard link:
|
|
23991
24000
|
|
|
23992
|
-
1.
|
|
23993
|
-
2.
|
|
24001
|
+
1. Images always print \`\`. This public, stable link works in Replicas chat, GitHub, and anywhere else Markdown images render. No flag is needed.
|
|
24002
|
+
2. Video and audio print \`Replicas chat embed: \` by default; this authenticated URL renders inline in Replicas chat **only** \u2014 see below. \`--access public\` prints a public embed instead.
|
|
23994
24003
|
3. \`View in Replicas: <deep-link>\` is a per-file dashboard URL of the form \`https://app.replicas.dev/workspaces/<workspace-id>?media=<media-id>\` that opens directly to that specific file.
|
|
23995
24004
|
|
|
23996
24005
|
Match each "View in Replicas" line to the embed line directly above it \u2014 that's the deep link for that file.
|
|
@@ -24005,13 +24014,13 @@ replicas media upload recap.html --name "Visual recap" --access organization
|
|
|
24005
24014
|
|
|
24006
24015
|
The printed \`Forge link (organization only)\` opens a dedicated page. Signed-in organization members go straight to it; signed-out members sign in and return to the page.
|
|
24007
24016
|
|
|
24008
|
-
|
|
24017
|
+
Video and audio stay private unless they must play without Replicas sign-in; then pass \`--access public\` (alias \`--share\`):
|
|
24009
24018
|
|
|
24010
24019
|
\`\`\`bash
|
|
24011
|
-
replicas media upload
|
|
24020
|
+
replicas media upload demo.mp4 --name "Checkout demo" --access public
|
|
24012
24021
|
\`\`\`
|
|
24013
24022
|
|
|
24014
|
-
|
|
24023
|
+
Public links are unguessable bearer URLs: anyone with the link can view the file until it is rotated or revoked. HTML pages only support organization access. Reuse the link printed at upload. \`replicas media share <media-id>\` issues a new link and breaks the old one everywhere it is embedded, and \`replicas media revoke <media-id>\` removes public access.
|
|
24015
24024
|
|
|
24016
24025
|
Permanently delete an upload with \`replicas media delete <media-id>\`. The backend only permits deletion when the media belongs to the current workspace; media from another workspace returns not found.
|
|
24017
24026
|
|
|
@@ -24019,14 +24028,14 @@ Permanently delete an upload with \`replicas media delete <media-id>\`. The back
|
|
|
24019
24028
|
|
|
24020
24029
|
| URL | What it is | Where it's allowed |
|
|
24021
24030
|
|---|---|---|
|
|
24022
|
-
| \`https://api.replicas.dev/v1/media/<id>\` (inside \`\`) | Authenticated API redirect
|
|
24031
|
+
| \`https://api.replicas.dev/v1/media/<id>\` (inside \`\`) | Authenticated API redirect printed for private video, audio, and HTML \u2014 requires the Replicas chat session | **Only** in the Replicas chat reply. Nowhere else. |
|
|
24023
24032
|
| \`https://replicas.dev/organizations/<organization-id>/media/<media-id>\` | Organization-only page printed by \`--access organization\` | Pull requests and other places where every viewer belongs to the Replicas organization. |
|
|
24024
|
-
| \`https://api.replicas.dev/v1/media/public/<id>/<token>\` |
|
|
24033
|
+
| \`https://api.replicas.dev/v1/media/public/<id>/<token>\` | Public bearer URL printed for every image, and for video or audio with \`--access public\` | The Replicas chat reply and GitHub embeds. |
|
|
24025
24034
|
| \`https://app.replicas.dev/workspaces/<workspace-id>?media=<media-id>\` | Authenticated dashboard deep link that opens the media file in the workspace | Everywhere external: Slack, GitHub, GitLab, Linear, PR bodies, comments, emails. |
|
|
24026
24035
|
|
|
24027
24036
|
### NEVER link the API redirect URL outside the Replicas chat reply
|
|
24028
24037
|
|
|
24029
|
-
The \`api.replicas.dev/v1/media/<id>\` URL is **not public**. It's an authenticated redirect that only resolves to a presigned download when the Replicas chat session token is present. Anywhere else (Slack, Linear, GitHub, a browser tab the user opens directly, a customer copy-pasting from chat) it returns \`{"error":"Missing authorization token"}\` and renders as a broken image.
|
|
24038
|
+
The \`api.replicas.dev/v1/media/<id>\` URL is **not public**. Image uploads never print it; if you have one for an image from an older upload, run \`replicas media share <media-id>\` to get a public link. It's an authenticated redirect that only resolves to a presigned download when the Replicas chat session token is present. Anywhere else (Slack, Linear, GitHub, a browser tab the user opens directly, a customer copy-pasting from chat) it returns \`{"error":"Missing authorization token"}\` and renders as a broken image.
|
|
24030
24039
|
|
|
24031
24040
|
This rule has no exceptions:
|
|
24032
24041
|
- \u274C Never paste it in a Slack message \u2014 upload the actual bytes via the 3-step \`files.getUploadURLExternal\` \u2192 POST bytes \u2192 \`files.completeUploadExternal\` flow instead (see below).
|
|
@@ -24060,12 +24069,12 @@ After (or alongside) the embeds, include a \`[View in Canvas](<deep-link>)\` hyp
|
|
|
24060
24069
|
|
|
24061
24070
|
After \`replicas media upload\` succeeds, external delivery has two required follow-up steps for every file:
|
|
24062
24071
|
|
|
24063
|
-
1. **Use the destination's inline representation:** upload the raw bytes to Slack, Linear, or GitLab; embed
|
|
24072
|
+
1. **Use the destination's inline representation:** upload the raw bytes to Slack, Linear, or GitLab; embed the image's printed public link on GitHub.
|
|
24064
24073
|
2. **Link the Replicas dashboard deep link** (\`?media=<id>\` form) so the user can jump straight to the file in the workspace.
|
|
24065
24074
|
|
|
24066
24075
|
A dashboard link alone is not enough. An embed without the dashboard link is not enough. Do both.
|
|
24067
24076
|
|
|
24068
|
-
Slack, Linear, and GitLab receive the original bytes through their native upload APIs. GitHub uses
|
|
24077
|
+
Slack, Linear, and GitLab receive the original bytes through their native upload APIs. GitHub uses the printed public link for screenshots and recording previews.
|
|
24069
24078
|
|
|
24070
24079
|
### Slack \u2014 embed natively via the 3-step external file upload flow
|
|
24071
24080
|
|
|
@@ -24166,19 +24175,17 @@ The same flow works for issue bodies (use \`issueCreate\` / \`issueUpdate\` with
|
|
|
24166
24175
|
|
|
24167
24176
|
Never paste the \`api.replicas.dev/v1/media/<id>\` URL into a Linear body or comment \u2014 it will render as a broken image to anyone outside your Replicas chat.
|
|
24168
24177
|
|
|
24169
|
-
### GitHub: inline images and recording previews
|
|
24170
|
-
|
|
24171
|
-
Replicas authenticates GitHub with GitHub App tokens, which native GitHub CLI attachment uploads do not support. Do not use \`gh --attach\` for media. Use a public Forge share for images in PR descriptions, issues, and comments.
|
|
24178
|
+
### GitHub: inline images and recording previews
|
|
24172
24179
|
|
|
24173
|
-
|
|
24180
|
+
Replicas authenticates GitHub with GitHub App tokens, which GitHub's attachment upload rejects, so \`gh --attach\` does not work. Use the public link every image upload prints, in public and private repositories alike, for PR descriptions, issues, and comments.
|
|
24174
24181
|
|
|
24175
|
-
1. Upload the image
|
|
24182
|
+
1. Upload the image:
|
|
24176
24183
|
|
|
24177
24184
|
\`\`\`bash
|
|
24178
|
-
replicas media upload /tmp/screenshot.png --name "PR screenshot"
|
|
24185
|
+
replicas media upload /tmp/screenshot.png --name "PR screenshot"
|
|
24179
24186
|
\`\`\`
|
|
24180
24187
|
|
|
24181
|
-
2. Copy the printed \`\`
|
|
24188
|
+
2. Copy the printed \`\` line verbatim into the body file, followed by the matching **View in Replicas** link. Never use a local file path, a \`/v1/media/<id>\` URL, a Linear \`assetUrl\`, or an expiring storage URL.
|
|
24182
24189
|
3. Create or update the PR using the body file:
|
|
24183
24190
|
|
|
24184
24191
|
\`\`\`bash
|
|
@@ -24187,13 +24194,13 @@ gh pr edit 456 --body-file /tmp/pr-body.md
|
|
|
24187
24194
|
gh pr comment 456 --body-file /tmp/comment.md
|
|
24188
24195
|
\`\`\`
|
|
24189
24196
|
|
|
24190
|
-
GitHub does not
|
|
24197
|
+
Videos stay private, and GitHub does not play external videos inline. Upload the MP4 normally, generate a poster with \`ffmpeg -i /tmp/demo.mp4 -frames:v 1 /tmp/demo-poster.png\`, upload the poster like any image, and link its printed embed to the recording's **View in Replicas** URL:
|
|
24191
24198
|
|
|
24192
24199
|
\`\`\`markdown
|
|
24193
24200
|
[](<recording-dashboard-url>)
|
|
24194
24201
|
\`\`\`
|
|
24195
24202
|
|
|
24196
|
-
Public
|
|
24203
|
+
Public links are unauthenticated bearer capabilities. Revoke with \`replicas media revoke <media-id>\` **only** when the user asks or the media should intentionally stop rendering; never as routine post-task cleanup, since revoking breaks every embed already posted on the PR.
|
|
24197
24204
|
|
|
24198
24205
|
For a self-contained HTML report, upload it with \`--access organization\` and put the printed \`Forge link\` Markdown in the PR body or comment. GitHub cannot render the page inline, so use the normal link rather than image syntax. HTML pages cannot be shared publicly.
|
|
24199
24206
|
|
|
@@ -24203,7 +24210,7 @@ Do **not** commit screenshots to the repo, use placeholder URLs, expose the auth
|
|
|
24203
24210
|
|
|
24204
24211
|
GitLab supports native project Markdown uploads. For a GitLab destination, always upload the media to Replicas first, then POST the same original file to the repository's \`/projects/:id/uploads\` API using the workspace GitLab credential. Insert the returned \`markdown\` value into the merge request body or comment and include the Replicas dashboard link. Image uploads render inline; MP4, MOV, and WebM uploads render as inline video players.
|
|
24205
24212
|
|
|
24206
|
-
Do not use a Replicas public
|
|
24213
|
+
Do not use a Replicas public link for GitLab when the native project upload succeeds; native uploads preserve project access controls.
|
|
24207
24214
|
|
|
24208
24215
|
## Recording defaults
|
|
24209
24216
|
|
|
@@ -24245,7 +24252,7 @@ replicas media upload chart-a.svg chart-b.svg --name "Latency chart" --name "Err
|
|
|
24245
24252
|
- \`--kind <image|video|audio|html>\` \u2014 override auto-detection
|
|
24246
24253
|
- \`--name <name>\`: required display name shown in the dashboard, one per file in order
|
|
24247
24254
|
- \`--session-id <id>\` \u2014 associate the upload with a specific session
|
|
24248
|
-
- \`--access organization|public\`: create an organization-only link
|
|
24255
|
+
- \`--access organization|public\`: for video, audio, and HTML, create an organization-only link or a public bearer URL (video and audio only). Images are always public
|
|
24249
24256
|
- \`--share\`: alias for \`--access public\`; not supported for HTML
|
|
24250
24257
|
`;
|
|
24251
24258
|
var MEDIA_ABILITY = {
|
|
@@ -27254,7 +27261,7 @@ var headlessFilesystemAgentResultSchema = external_exports.object({
|
|
|
27254
27261
|
});
|
|
27255
27262
|
|
|
27256
27263
|
// ../shared/src/cli-version.ts
|
|
27257
|
-
var CLI_VERSION = "0.2.
|
|
27264
|
+
var CLI_VERSION = "0.2.729";
|
|
27258
27265
|
|
|
27259
27266
|
// ../shared/src/version.ts
|
|
27260
27267
|
function compareVersions(v1, v2) {
|
|
@@ -31333,38 +31340,41 @@ async function mediaUploadCommand(filePaths, options) {
|
|
|
31333
31340
|
if (publicAccess && kinds.some((kind) => !isPublicMediaKind(kind))) {
|
|
31334
31341
|
throw new Error("HTML pages only support organization access. Use --access organization.");
|
|
31335
31342
|
}
|
|
31343
|
+
const shared = kinds.map((kind) => publicAccess || kind === MEDIA_KIND.IMAGE);
|
|
31336
31344
|
const results = await Promise.allSettled(
|
|
31337
31345
|
filePaths.map((filePath, i) => uploadOne(filePath, names[i], kinds[i], options))
|
|
31338
31346
|
);
|
|
31339
|
-
const shareResults =
|
|
31347
|
+
const shareResults = await Promise.allSettled(
|
|
31340
31348
|
results.map(
|
|
31341
|
-
(result) => result.status === "fulfilled" ? shareMedia(result.value.media.id) : Promise.resolve(null)
|
|
31349
|
+
(result, i) => result.status === "fulfilled" && shared[i] ? shareMedia(result.value.media.id) : Promise.resolve(null)
|
|
31342
31350
|
)
|
|
31343
|
-
)
|
|
31351
|
+
);
|
|
31344
31352
|
const config3 = readAgentConfig();
|
|
31345
31353
|
const failures = [];
|
|
31346
31354
|
for (let i = 0; i < results.length; i++) {
|
|
31347
31355
|
const result = results[i];
|
|
31348
31356
|
if (result.status === "fulfilled") {
|
|
31349
31357
|
const { fileName, media } = result.value;
|
|
31350
|
-
const shareResult =
|
|
31358
|
+
const shareResult = shareResults[i];
|
|
31351
31359
|
const publicUrl = shareResult?.status === "fulfilled" ? shareResult.value ?? void 0 : void 0;
|
|
31352
|
-
if (
|
|
31360
|
+
if (shared[i]) {
|
|
31353
31361
|
if (!publicUrl) {
|
|
31354
|
-
const
|
|
31362
|
+
const reason = shareResult?.status === "rejected" ? shareResult.reason : new Error("Missing public share URL");
|
|
31355
31363
|
failures.push({
|
|
31356
31364
|
filePath: filePaths[i],
|
|
31357
31365
|
operation: "share",
|
|
31358
|
-
error:
|
|
31366
|
+
error: new Error(
|
|
31367
|
+
`${reason instanceof Error ? reason.message : String(reason)}. Uploaded as ${media.id}; retry with \`replicas media share ${media.id}\``
|
|
31368
|
+
)
|
|
31359
31369
|
});
|
|
31360
31370
|
}
|
|
31361
31371
|
}
|
|
31362
31372
|
if (media.kind === MEDIA_KIND.HTML) {
|
|
31363
31373
|
console.log(`HTML page: [${fileName}](${MONOLITH_URL}/v1/media/${media.id})`);
|
|
31364
|
-
} else if (!
|
|
31374
|
+
} else if (!shared[i] || publicUrl) {
|
|
31365
31375
|
console.log(formatMediaEmbed(fileName, media.id, publicUrl));
|
|
31366
31376
|
}
|
|
31367
|
-
if (options.access === "organization") {
|
|
31377
|
+
if (options.access === "organization" && !shared[i]) {
|
|
31368
31378
|
console.log(
|
|
31369
31379
|
`Forge link (organization only): [View ${options.name?.[i] ?? fileName}](${getOrganizationMediaUrl(media.organization_id, media.id)})`
|
|
31370
31380
|
);
|
|
@@ -31405,7 +31415,7 @@ async function mediaListCommand(options) {
|
|
|
31405
31415
|
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
31406
31416
|
const { media } = await agentFetch(`/v1/engine/media${query}`);
|
|
31407
31417
|
for (const m of media) {
|
|
31408
|
-
console.log(`${
|
|
31418
|
+
console.log(`${m.id} ${m.kind} ${m.display_name ?? ""} ${m.size} ${m.created_at}`);
|
|
31409
31419
|
}
|
|
31410
31420
|
}
|
|
31411
31421
|
|
|
@@ -32978,7 +32988,7 @@ if (isAgentMode()) {
|
|
|
32978
32988
|
"Required human-facing display name shown in the dashboard. Pass one --name per file, in order.",
|
|
32979
32989
|
(value, previous) => [...previous, value],
|
|
32980
32990
|
[]
|
|
32981
|
-
).option("--access <access>", "Link access: organization (sign-in required) or public (
|
|
32991
|
+
).option("--access <access>", "Link access for video, audio, and HTML: organization (sign-in required) or public (video and audio only). Images always get a public link").option("--share", "Alias for --access public; not supported for HTML").action(async (files, options) => {
|
|
32982
32992
|
try {
|
|
32983
32993
|
await mediaUploadCommand(files, options);
|
|
32984
32994
|
} catch (error51) {
|
|
@@ -32990,7 +33000,7 @@ if (isAgentMode()) {
|
|
|
32990
33000
|
process.exit(1);
|
|
32991
33001
|
}
|
|
32992
33002
|
});
|
|
32993
|
-
media.command("share <mediaId>").description("
|
|
33003
|
+
media.command("share <mediaId>").description("Rotate an image's public forge URL, or create one for video or audio media").action(async (mediaId) => {
|
|
32994
33004
|
try {
|
|
32995
33005
|
await mediaShareCommand(mediaId);
|
|
32996
33006
|
} catch (error51) {
|